diff --git a/system/codeigniter/Base4.php b/system/codeigniter/Base4.php
index 8b3dc92..9366b45 100644
--- a/system/codeigniter/Base4.php
+++ b/system/codeigniter/Base4.php
@@ -21,8 +21,8 @@
  * This file is used only when Code Igniter is being run under PHP 4.
  * 
  * In order to allow CI to work under PHP 4 we had to make the Loader class 
- * the parent class of the Controller Base class.  It's the only way we 
- * could enable functions like $this->load->library('email') to instantiate 
+ * the parent of the Controller Base class.  It's the only way we enabled
+ * enable functions like $this->load->library('email') to instantiate 
  * classes that can then be used within controllers as $this->email->send()
  *
  * PHP 4 also has trouble referencing the CI super object within application 
diff --git a/system/codeigniter/CodeIgniter.php b/system/codeigniter/CodeIgniter.php
index 63ae458..611b1a6 100644
--- a/system/codeigniter/CodeIgniter.php
+++ b/system/codeigniter/CodeIgniter.php
@@ -50,7 +50,7 @@
  * ------------------------------------------------------
  */
 
-$BM =& _load_class('Benchmark');
+$BM =& load_class('Benchmark');
 $BM->mark('total_execution_time_start');
 $BM->mark('loading_time_base_clases_start');
 
@@ -60,7 +60,7 @@
  * ------------------------------------------------------
  */
 
-$EXT =& _load_class('Hooks');
+$EXT =& load_class('Hooks');
 
 /*
  * ------------------------------------------------------
@@ -75,9 +75,9 @@
  * ------------------------------------------------------
  */
 
-$CFG =& _load_class('Config');
-$RTR =& _load_class('Router');
-$OUT =& _load_class('Output');
+$CFG =& load_class('Config');
+$RTR =& load_class('Router');
+$OUT =& load_class('Output');
 
 /*
  * ------------------------------------------------------
@@ -99,9 +99,9 @@
  * ------------------------------------------------------
  */
 
-$IN		=& _load_class('Input');
-$URI	=& _load_class('URI');
-$LANG	=& _load_class('Language');
+$IN		=& load_class('Input');
+$URI	=& load_class('URI');
+$LANG	=& load_class('Language');
 
 /*
  * ------------------------------------------------------
@@ -116,7 +116,7 @@
  * 
  */
  
-_load_class('Loader', FALSE); 
+load_class('Loader', FALSE); 
   
 if (floor(phpversion()) < 5)
 {
@@ -127,7 +127,7 @@
 	require(BASEPATH.'codeigniter/Base5'.EXT);
 }
 
-_load_class('Controller', FALSE); 
+load_class('Controller', FALSE); 
 
 require(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT);
 
diff --git a/system/codeigniter/Common.php b/system/codeigniter/Common.php
index a801c08..8ac80d6 100644
--- a/system/codeigniter/Common.php
+++ b/system/codeigniter/Common.php
@@ -41,7 +41,7 @@
 * @param	bool	optional flag that lets classes get loaded but not instantiated
 * @return	object
 */
-function _load_class($class, $instantiate = TRUE)
+function &load_class($class, $instantiate = TRUE)
 {
 	static $objects = array();
 
@@ -55,7 +55,8 @@
 	// which we don't need to load.  We only instantiate it.
 	if ($class == 'Instance')
 	{
-		return $objects[$class] =& new $class();	
+		$objects[$class] =& new $class();
+		return $objects[$class];
 	}
 		
 	// If the requested class does not exist in the application/libraries
@@ -104,18 +105,21 @@
 
 	if ($instantiate == FALSE)
 	{
-		return $objects[$class] = TRUE;
+		$objects[$class] = TRUE;
+		return $objects[$class];
 	}
 		
 	if ($is_subclass == TRUE)
 	{
 		$name = 'MY_'.$class;
-		return $objects[$class] =& new $name();
+		$objects[$class] =& new $name();
+		return $objects[$class];
 	}
 
 	$name = ($class != 'Controller') ? 'CI_'.$class : $class;
 	
-	return $objects[$class] =& new $name();	
+	$objects[$class] =& new $name();
+	return $objects[$class];
 }
 
 /**
@@ -124,7 +128,7 @@
 * @access	private
 * @return	array
 */
-function &_get_config()
+function &get_config()
 {
 	static $main_conf;
 		
@@ -162,7 +166,7 @@
 */
 function show_error($message)
 {
-	$error =& _load_class('Exceptions');
+	$error =& load_class('Exceptions');
 	echo $error->show_error('An Error Was Encountered', $message);
 	exit;
 }
@@ -180,7 +184,7 @@
 */
 function show_404($page = '')
 {
-	$error =& _load_class('Exceptions');
+	$error =& load_class('Exceptions');
 	$error->show_404($page);
 	exit;
 }
@@ -199,13 +203,13 @@
 {
 	static $LOG;
 	
-	$config =& _get_config();
+	$config = get_config();
 	if ($config['log_errors'] === FALSE)
 	{
 		return;
 	}
 
-	$LOG =& _load_class('Log');	
+	$LOG =& load_class('Log');	
 	$LOG->write_log($level, $message, $php_error);
 }
 
@@ -238,7 +242,7 @@
 		return;
 	}
 
-	$error =& _load_class('Exceptions');
+	$error =& load_class('Exceptions');
 
 	// Should we display the error?  
 	// We'll get the current error_reporting level and add its bits
@@ -250,7 +254,7 @@
 	}
 	
 	// Should we log the error?  No?  We're done...
-	$config =& _get_config();
+	$config = get_config();
 	if ($config['log_errors'] === FALSE)
 	{
 		return;
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index c8a00b7..99c95a6 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -682,7 +682,8 @@
 			}
 		}
 
-		return $this->data_cache['table_names'] =& $retval;
+		$this->data_cache['table_names'] = $retval;
+		return $this->data_cache['table_names'];
 	}
 	
 	// --------------------------------------------------------------------
@@ -747,7 +748,8 @@
 			}		
 		}
 		
-		return $this->data_cache['field_names'][$table] =& $retval;
+		$this->data_cache['field_names'][$table] = $retval;
+		return $this->data_cache['field_names'][$table];
 	}
 
 	// --------------------------------------------------------------------
@@ -931,7 +933,8 @@
 	 */		
 	function cache_on()
 	{
-		return $this->cache_on = TRUE;
+		$this->cache_on = TRUE;
+		return TRUE;
 	}
 
 	// --------------------------------------------------------------------
@@ -944,7 +947,8 @@
 	 */	
 	function cache_off()
 	{
-		return $this->cache_on = FALSE;
+		$this->cache_on = FALSE;
+		return FALSE;
 	}
 	
 
diff --git a/system/database/DB_utility.php b/system/database/DB_utility.php
index c2c5f1f..51e43a7 100644
--- a/system/database/DB_utility.php
+++ b/system/database/DB_utility.php
@@ -110,7 +110,8 @@
 			}
 		}
 			
-		return $this->data_cache['db_names'] =& $dbs;
+		$this->data_cache['db_names'] = $dbs;
+		return $this->data_cache['db_names'];
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index e83c640..794405a 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -163,7 +163,8 @@
      */
     function get_cursor()
     {
-		return $this->curs_id = ocinewcursor($this->conn_id);
+		$this->curs_id = ocinewcursor($this->conn_id);
+		return $this->curs_id;
     }
 
     // --------------------------------------------------------------------
diff --git a/system/database/drivers/postgre/postgre_utility.php b/system/database/drivers/postgre/postgre_utility.php
index 0c265de..b08b879 100644
--- a/system/database/drivers/postgre/postgre_utility.php
+++ b/system/database/drivers/postgre/postgre_utility.php
@@ -106,7 +106,7 @@
 	 */
 	function _repair_table($table)
 	{
-		return return FALSE;
+		return FALSE;
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/libraries/Config.php b/system/libraries/Config.php
index 26770cc..82836b1 100644
--- a/system/libraries/Config.php
+++ b/system/libraries/Config.php
@@ -44,7 +44,7 @@
      */
 	function CI_Config()
 	{
-		$this->config =& _get_config();
+		$this->config = get_config();
 		log_message('debug', "Config Class Initialized");
 	}
   	// END CI_Config()
diff --git a/system/libraries/Controller.php b/system/libraries/Controller.php
index 7a3f5e5..938c46e 100644
--- a/system/libraries/Controller.php
+++ b/system/libraries/Controller.php
@@ -73,7 +73,7 @@
 		
 		foreach ($classes as $var => $class)
 		{
-			$this->$var =& _load_class($class);
+			$this->$var =& load_class($class);
 		}
 		
 		
diff --git a/system/libraries/Hooks.php b/system/libraries/Hooks.php
index 8767e10..e2d0500 100644
--- a/system/libraries/Hooks.php
+++ b/system/libraries/Hooks.php
@@ -53,7 +53,7 @@
 	 */  	
   	function _initialize()
   	{
-		$CFG =& _load_class('Config');
+		$CFG =& load_class('Config');
 		
 		// If hooks are not enabled in the config file
 		// there is nothing else to do
diff --git a/system/libraries/Input.php b/system/libraries/Input.php
index 0d3c87b..72344e3 100644
--- a/system/libraries/Input.php
+++ b/system/libraries/Input.php
@@ -44,7 +44,7 @@
 	{	
 		log_message('debug', "Input Class Initialized");
 	
-		$CFG =& _load_class('Config');
+		$CFG =& load_class('Config');
 		$this->use_xss_clean	= ($CFG->item('global_xss_filtering') === TRUE) ? TRUE : FALSE;
 		$this->allow_get_array	= ($CFG->item('enable_query_strings') === TRUE) ? TRUE : FALSE;		
 		$this->_sanitize_globals();
@@ -306,7 +306,8 @@
 		
 		if ($this->ip_address === FALSE)
 		{
-			return $this->ip_address = '0.0.0.0';
+			$this->ip_address = '0.0.0.0';
+			return $this->ip_address;
 		}
 		
 		if (strstr($this->ip_address, ','))
diff --git a/system/libraries/Log.php b/system/libraries/Log.php
index eff7cb7..09538fa 100644
--- a/system/libraries/Log.php
+++ b/system/libraries/Log.php
@@ -42,7 +42,7 @@
 	 */
 	function CI_Log()
 	{
-		$config =& _get_config();
+		$config = get_config();
 		
 		$this->log_path = ($config['log_path'] != '') ? $config['log_path'] : BASEPATH.'logs/';
 		
diff --git a/system/libraries/Output.php b/system/libraries/Output.php
index 507beab..7e85945 100644
--- a/system/libraries/Output.php
+++ b/system/libraries/Output.php
@@ -299,8 +299,8 @@
 	 */	
 	function _display_cache(&$CFG, &$RTR)
 	{
-		$CFG =& _load_class('Config');
-		$RTR =& _load_class('Router');
+		$CFG =& load_class('Config');
+		$RTR =& load_class(('Router');
 	
 		$cache_path = ($CFG->item('cache_path') == '') ? BASEPATH.'cache/' : $CFG->item('cache_path');
 			
diff --git a/system/libraries/Router.php b/system/libraries/Router.php
index 27e3c27..dab8488 100644
--- a/system/libraries/Router.php
+++ b/system/libraries/Router.php
@@ -48,7 +48,7 @@
 	 */
 	function CI_Router()
 	{
-		$this->config =& _load_class('Config');
+		$this->config =& load_class('Config');
 		$this->_set_route_mapping();
 		log_message('debug', "Router Class Initialized");
 	}
diff --git a/system/libraries/URI.php b/system/libraries/URI.php
index 80b1126..fcf6afe 100644
--- a/system/libraries/URI.php
+++ b/system/libraries/URI.php
@@ -42,7 +42,7 @@
 	 */		
 	function CI_URI()
 	{
-		$this->router =& _load_class('Router');	
+		$this->router =& load_class('Router');	
 		log_message('debug', "URI Class Initialized");
 	}
 	
